package com.github.common.extend.demo.config.filetask;

import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;

/**
 * 任务提交参数
 * @author wangjj7
 * @date 2023/8/1
 * @description
 */
@Data
@Accessors(chain = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
public class FileTaskParam {

    /**
     * 如果为空使用默认规则生成
     */
    String id;

    /**
     * 模块名,必填
     */
    String modelName;

    /**
     * 查询条件
     */
    Object queryCondition;

    /**
     * 任务名
     * 默认 {@link #modelName} + {@link #id}
     */
    String taskName;

    /**
     * 文件名（带扩展名）
     * 默认 {@link #taskName}
     */
    String fileName;

    /**
     * 创建人
     */
    String createUser;

    /*---------------- 以下为任务执行相关的配置 -----------------*/

    /**
     * 是否允许共享同一个模块{@link #modelName}下请求参数{@link #queryCondition}相同的任务上传的文件
     *
     * 要求：
     * 1.模块名{@link #modelName}相同且参数相同
     * 2.参数相同：
     *      2.1 如果{@link #queryCondition}实现了{@link FileTaskQuery},{@link FileTaskQuery#$hash()}相等
     *      且{@link FileTaskQuery#$equals(Object)}为true
     *      2.2 参数{@link #queryCondition#hashCode()}相等且{@link #queryCondition#equals(Object)}为true
     * 3. 任务状态未过期
     */
    Boolean canShare;

    /**
     * 文件的过期天数
     */
    Integer expiredDays;

    /**
     * 文件生成的方式
     */
    DataSourceBuilder dataSourceBuilder;

}
